dotnetcore三大Redis客户端对比和使用心得 | 您所在的位置:网站首页 › redis hash 性能对比 › dotnetcore三大Redis客户端对比和使用心得 |
var redisDB = new CSRedisClient[16]; // 多客户端for (var a = 0; a < redisDB.Length; a++) redisDB[a] = new CSRedisClient(Configuration.GetConnectionString("redis") + ",defaultDatabase=" + a);services.AddSingleton(redisDB);
// ----------------------------
_redisDB[0].IncrByAsync("ProfileUsageCap", -1)
_redisDB[0].HGetAsync(profileUsage, eqidPair.ProfileId.ToString())
_redisDB[0].HIncrByAsync(profileUsage, eqidPair.ProfileId.ToString(), -1);
内置的静态操作类RedisHelper, 与Redis-Cli 命令完全一致, 故他能原生支持”blocking pops”。 ![]() ![]() 对自己要使用的Redis API 的时间复杂度心里要有数,尽量不要使用长时间运行的命令如keys *,可通过redis.io SlowLog命令观测 哪些命令耗费较长时间 Redis Key可按照“:”分隔定义成有业务意义的字符串,如NewUsers:201909:666666(某些Redis UI可直观友好查看该业务) 合适确定Key-Value的大小:Redis对于small value更友好, 如果值很大,考虑划分到多个key 关于缓存穿透,面试的时候会问,自行搜索布隆过滤器。 redis虽然有持久化机制,但在实际中会将key-value 持久化到关系型数据库,因为对于某些结构化查询,SQL更为有效。
----- 20190829 多说两句------- 以上三大客户端,Microsoft.Extensions.Caching.StackExchangeRedis 与其他两者的定位还是有很大差距的,单纯使用Redis 缓存特性, 有微软出品,必属精品情结的可使用此客户端; StackExchange.Redis、CSRedisCore 对于Redis全功能特性支持的比较全,但是我也始终没有解决StackExchange.Redis : RedisTimeoutException 超时的问题,换成CSRedisCore 确实没有出现Redis相关异常。 ---- 2019-09-25 update-------- - CSRedisCore 挖坑填坑经历 - 受到公号一些网友的启发,再次使用StackExchange.Redis , 并在redis配置中增加 abortConnect= false(缺省为true,表示不尝试重连),超时问题不再出现。
https://azure.microsoft.com/en-us/blog/investigating-timeout-exceptions-in-stackexchange-redis-for-azure-redis-cache/ |
CopyRight 2018-2019 实验室设备网 版权所有 |